package com.guaoran.interview.in2019.distributed;

/**
 * @author : guaoran
 * @Description : <br/>
 * @date :2019/2/18 13:59
 */
public class Zookeeper {
    /*
        2pc ：二阶段提交 保证事务的一致性
            阶段一 ：提交事务请求。
                当客户端有请求到leader 后，leader 会通过 协调者（TM）想每个参与者进行发送事务内容，询问是否可以进行提交操作，
                参与者节点执行事务操作，并将Undo 和 Redo 信息记录到事务日志中
                当参与者执行完后，并对协调者发送执行结果，进行响应
            阶段二 ：执行事务提交
                当协调者收到参与者返回过来的事务提交响应的结果时，会判断，是否都同意进行提交，如果都同意进行提交则，发送提交命令，
                如果某个参与者事务操作执行失败，将返回 不提交操作，此时，协调者将发送回滚命令

        集群
            zookeeper 的角色有三个：leader 、follower、observer
            当客户端随机连上某个节点时，如果是读请求，就直接从当前节点进行读取数据，
            如果是写操作，则会将请求转发给leader 进行操作。
            leader 操作后提交事务，然后会进行广播事务，只有超过半数节点写入成功，那么泄请求才会被提交（类似2pc事务）
     */
}
